package io;

import java.io.*;

/**
 * JAVA将流分为两类:
 * 节点流:又称低级流，是真实链接程序与另一端的"管道"，负责实际读写数据的流.
 *         JAVA IO一定创建在低级流的基础上进行的。
 * 处理流:又称高级流，不是独立存在的，必须链接在其他流上使用。作用是当数据流经当前流时，对数据做某些
 *         加工处理，简化我们的操作。
 * 实际开发中，我们经常串联一些高级流并最终链接在低级流上，是读写操作以流水线式的加工处理，这种操作
 * 也成流的链接，是IO操作的精髓所在的.
 *
 * 缓冲流:
 * 缓冲流是一对高级流，再流链接中的作用时提高读写效率。
 * java.io.BufferedInputStream和BufferedOutputStream.
 *          他们同样继承自InputStream和OutputStream.
 *
 */
public class BOSDemo {
    public static void main(String[] args) throws IOException {
        /** 缓冲流: */
        /** BufferedInputStream和BufferedOutputStream. */
        //  含有缓冲区(进行块读),默认8k,满才走
        FileInputStream fis = new FileInputStream("setup.exe");
        BufferedInputStream bis = new BufferedInputStream(fis);
        FileOutputStream fos = new FileOutputStream("setup_p2.exe");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int d;
        long start = System.currentTimeMillis();
        while( (d=bis.read()) !=-1 ){
            bos.write(d);
        }
        long len = System.currentTimeMillis();
        System.out.println("执行完毕!耗时:"+(len-start)+"ms");
        bos.close();
        bis.close();





















    }
}
